Currently, the largest computer network in existence is the Internet, which is a worldwide interconnection of computer networks that communicate using a common protocol. The Internet grew out of work funded in the 1960s by the United States Department of Defense's Advanced Research Projects Agency (ARPA). Millions of computers, from low end personal computers to high-end super computers are connected to the Internet. For many years, few outside of the academic/research community accessed the Internet.
In 1989, a new type of information system known as the World-Wide Web (the Web) was introduced to the Internet. Early development of the Web took place at CERN, the European Particle Physics Laboratory. The Web is a wide-area hypermedia information retrieval system.
At that time, architecture of the Web typically followed a conventional client-server model. The terms "client" and "server" are used to refer to a computer's general role as a requester of data (the client) or provider of data (the server). In the Web environment, Web browsers, such as Mosaic, reside in clients and Web documents reside in servers. Web clients and Web servers communicate using a protocol called "HyperText Transfer Protocol" (HTTP). A browser opens a connection to a server and initiates a request for a document. The server delivers the requested document, typically in the form of a text document coded in a standard HyperText Markup Language (HTML) format.
Programs written in the Java.TM. language, developed by Sun Microsystems of Mountain View, Calif., are architecture neutral such that the programs run on any platform that supports Java. The programs are architecture neutral because they are compiled into a series of byte-codes that are not hardware specific and thus can be downloaded and executed on many different computers. Byte-codes are transmitted over the Internet and then translated and executed by the receiving computer.
One unique feature of Java not provided by Web browsers that do not support Java is an ability to provide applets as part of a Web page. Applets are part of a Web page, but they are downloaded and executed by the computer running a Web browser rather than the Web server. Thus, a user, with a browser that supports Java, accesses a Web page and downloads a small program that is executed locally. This, however, presents security issues not present in the traditional client-server model.
To provide security, Java methods and variables are accessed by name and are executed in a restricted environment that includes a predetermined portion of memory. Furthermore, when byte-codes are received they are subjected to a verification process that determines whether the byte-codes have been modified.
Security for applets may be provided in a straightforward all-or-nothing manner. For example, the applet is loaded and executed, or it is not loaded and executed. Because the applet is self-contained, it does not access local resources other than a designated, bounded region of memory.
Another unique feature of Java is the servlet, which is a program, like an applet, however, a servlet runs on the Web server rather than the Web browser. Servlets are typically larger than applets and/or require more resources. For example, a servlet may be a search program offered by a particular server. A user accesses the servlet by supplying search parameters. The servlet then executes a search of resources available to the server. Thus, a user may have access to certain server resources and the server may have its search software updated by a third party without any effort by the server administrator.
Because servlets may require access to server resources, the all-or-nothing approach is inefficient. In order to provide a secure all-or-nothing scheme in a server that loads servlets, a standard subset of resources would be offered to all servlets. However, different servlets require different resources and different servlet sources may be worthy of different levels of trust. Thus, prior security schemes do not provide a flexible, yet secure, environment for providing servlets on a server. Therefore, it would be desirable to provide security to Web servers from potentially hostile programs, wherein permissions to access the resources of the server are granted based on the source of the program.
As the Web grows, it would be desirable to provide greater access to the resources and features of the Web. Thus, many controllers of Web servers may wish to provide access to servlets developed by third parties. Therefore, it would be desirable to provide security to Web servers from potentially hostile servlets, wherein access to the resources of the server are allocated based on the source of a particular servlet.